package result

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

// Result 定义返回结构
type Result struct {
	Code    int         `json:"code"`    // 状态码
	Message string      `json:"message"` // 提示信息
	Data    interface{} `json:"data"`    // 返回数据
}

// Success 返回成功结构体
func Success(c *gin.Context, data interface{}) {
	// 检查data是否为nil，如果是则初始化为一个空的gin.H
	if data == nil {
		data = gin.H{}
	}

	// 初始化一个Result结构体
	response := Result{}
	// 设置响应码为成功码
	response.Code = int(ApiCode.SUCCESS)
	// 获取成功码对应的消息
	response.Message = ApiCode.GetMessage(ApiCode.SUCCESS)
	// 设置响应数据
	response.Data = data
	// 以JSONP格式返回成功响应
	c.JSONP(http.StatusOK, response)
}

// Failure 返回失败结构体
func Failure(c *gin.Context, code int, message string) {
	// 定义一个响应结构体
	response := Result{}
	// 设置响应的状态码
	response.Code = code
	// 设置响应的消息
	response.Message = message
	// 设置响应的数据为空的gin.H对象
	response.Data = gin.H{}
	// 将响应以JSON格式返回给客户端
	c.JSON(http.StatusOK, response)
}
